//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//
//
#ifndef Green_Object_H
#define Green_Object_H

#include <string>

namespace Green {

  /*!
    \class Object
    \brief Base interface defining class for lots of classes in the project.
  */

  class Object {
  public:
    Object() { }
    Object(const Object& rOther) { }
    virtual Object* Clone() const = 0; //!< Return a cloned Object of the same type and same contents as the Object being cloned.
    virtual const std::string ToString() const = 0; //!< Return a string describing the current state of the Object.
    virtual const char* Type() const = 0; //!< Return a string describing the actual type of the Object.
    virtual ~Object() { } //!< Virtual destructor to ensure orderly destruction of derived classes.
  };

}

#endif
